#Boa:Dialog:VerDocumentos

import wx
import wx.grid
import consultasBD
import utiles
from decimal import Decimal

def create(parent):
    return VerDocumentos(parent)

[wxID_VERDOCUMENTOS, wxID_VERDOCUMENTOSBUTTON1, wxID_VERDOCUMENTOSBUTTON2, 
 wxID_VERDOCUMENTOSGRID1, 
] = [wx.NewId() for _init_ctrls in range(4)]

class VerDocumentos(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_VERDOCUMENTOS, name='VerDocumentos',
              parent=prnt, pos=wx.Point(224, 168), size=wx.Size(587, 377),
              style=wx.DEFAULT_DIALOG_STYLE, title='Ver documentos')
        self.SetClientSize(wx.Size(579, 350))

        self.grid1 = wx.grid.Grid(id=wxID_VERDOCUMENTOSGRID1, name='grid1',
              parent=self, pos=wx.Point(8, 8), size=wx.Size(560, 296), style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnClickIzquierdo)

        self.button1 = wx.Button(id=wxID_VERDOCUMENTOSBUTTON1, label='Aceptar',
              name='button1', parent=self, pos=wx.Point(398, 318),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnAceptar,
              id=wxID_VERDOCUMENTOSBUTTON1)

        self.button2 = wx.Button(id=wxID_VERDOCUMENTOSBUTTON2, label='Cancelar',
              name='button2', parent=self, pos=wx.Point(486, 318),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnCancelar,
              id=wxID_VERDOCUMENTOSBUTTON2)

    def __init__(self, parent, fecha, tipo):
        self._init_ctrls(parent)
        self.aceptado = False
        self.tipo = tipo
        self.columnas = []
        if self.tipo == 1:
            self.columnas = ["id vta","Numero","Tipo","Fecha","Cliente","Total","Vendedora"]
            sucursal = utiles.getSucursalActiva()
            consultaSQL = "SELECT * FROM ventas WHERE fecha >= '%s' AND sucursal = '%s' ORDER BY fecha DESC,idventa ASC" % (fecha,sucursal)
            datosTickets = consultasBD.ordenCrudaDict(consultaSQL)
            if len(datosTickets) == 0:
                utiles.mensaje(None,"Error al consultar la BD.\nNo pudo recuperarse informacion de tickets")
                return
            self.inicializarGrilla(datosTickets)
        else:
            self.columnas = ["Fecha","Numero","Cliente","Descripcion","Importe"]
            sucursal = utiles.getSucursalActiva()
            datosTickets = [{"fecha":"2008-02-01"},{"fecha":"2008-03-01"}]
            #consultaSQL = ""
            #datosTickets = consultasBD.ordenCrudaDict(consultaSQL)
            #if len(datosTickets) == 0:
            #    utiles.mensaje(None,"Error al consultar la BD.\nNo pudo recuperarse informacion de tickets")
            #    return
            self.inicializarGrilla(datosTickets)
        self.seleccion = []

    def inicializarGrilla(self, datosTickets):
        
        self.grid1.CreateGrid(len(datosTickets),len(self.columnas))
          
        for i,col in enumerate(self.columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.DisableDragColSize()
        self.grid1.DisableDragRowSize()

        for x in xrange(len(datosTickets)):
            self.grid1.AutoSizeRow(x,False)
            for i in xrange(len(self.columnas)):
                self.grid1.SetReadOnly(x,i,True)
        
        if self.tipo == 1:
            self.llenarFactura(datosTickets)
        else:
            self.llenarRecibo(datosTickets)

    def llenarFactura(self,datosTickets):
        #["id vta","Numero","Tipo","Fecha","Cliente","Total"]
        fila = 0
        for renglon in datosTickets:
            self.grid1.SetCellValue(fila,0,str(renglon['idventa']))
            self.grid1.SetCellValue(fila,1,str(renglon['nrofactura']))
            self.grid1.SetCellValue(fila,2,str(renglon['idformaticket']))
            fecha = str(renglon['fecha'])
            fecha = fecha[8:10]+"-"+fecha[5:7]+"-"+fecha[:4]            
            self.grid1.SetCellValue(fila,3,fecha.center(10))
            consultaSQL = "SELECT nombre FROM cliente WHERE idcliente = '%s'" % str(renglon['idcliente'])
            nombre = consultasBD.ordenCrudaDict(consultaSQL)
            if len(nombre) == 0:
                self.grid1.SetCellValue(fila,4,str(renglon['idcliente']))
            else:
                self.grid1.SetCellValue(fila,4,str(nombre[0]['nombre']))
            self.grid1.SetCellValue(fila,5,("$"+str("%.02f" % renglon['totalfactura'])))
            usuario = str(renglon['usuario'])
            consultaSQL = "SELECT nombre FROM vendedoras WHERE idvendedora = '%s'" % (usuario)
            nombre = consultasBD.ordenCrudaDict(consultaSQL)[0]['nombre']
            self.grid1.SetCellValue(fila,6,nombre)
            fila += 1
        for x in xrange(len(self.columnas)):
            self.grid1.AutoSizeColumn(x,True)

    def llenarRecibo(self,datosTickets):
        pass

    def getAceptado(self):
        return self.aceptado

    def getSeleccion(self):
        return self.seleccion
    
    def OnAceptar(self, event):
        if self.seleccion != []:
            self.aceptado = True
        self.Close()

    def OnCancelar(self, event):
        self.aceptado = False
        self.Close()

    def OnClickIzquierdo(self, event):
        fil = self.grid1.GetGridCursorRow()
        if self.grid1.GetCellBackgroundColour(fil,0) == utiles.BLANCO:
            for i in xrange(self.grid1.GetNumberCols()):
               self.grid1.SetCellBackgroundColour(fil, i, utiles.VERDE)
            self.seleccion.append(self.grid1.GetCellValue(fil,1))
        else:
            for i in xrange(self.grid1.GetNumberCols()):
               self.grid1.SetCellBackgroundColour(fil, i, utiles.BLANCO)
            self.seleccion.remove(self.grid1.GetCellValue(fil,1))
        self.grid1.Refresh()
